Two-node, axial-only planar and spatial truss elements. Each node carries only translational degrees of freedom. The global stiffness of a member of length L and unit direction n is
The inherited mass matrix uses consistent linear interpolation, giving rhoAL/6 times [[2I,I],[I,2I]]. Neither element resists bending or has nodal rotational degrees of freedom.
Initializes a [[truss_element_2d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(material), | intent(in) | :: | mat |
The elastic material and density. |
||
| real(kind=real64), | intent(in) | :: | area |
The cross-sectional area. |
||
| class(node), | intent(in) | :: | nd1 |
The first and second truss nodes. |
||
| class(node), | intent(in) | :: | nd2 |
The first and second truss nodes. |
The initialized planar truss element.
Initializes a [[truss_element_3d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(material), | intent(in) | :: | mat |
The elastic material and density. |
||
| real(kind=real64), | intent(in) | :: | area |
The cross-sectional area. |
||
| class(node), | intent(in) | :: | nd1 |
The first and second truss nodes. |
||
| class(node), | intent(in) | :: | nd2 |
The first and second truss nodes. |
The initialized spatial truss element.
Defines a pin-jointed 2D bar with x and y translations per node. Use the parent mass_matrix and the global axial stiffness override.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | area |
The element cross-sectional area. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node at natural coordinate s = -1. |
|||
| type(node), | public | :: | node_2 |
The node at natural coordinate s = 1. |
| private pure function t2d_init (mat, area, nd1, nd2) | Initializes a [[truss_element_2d]]. |
| procedure , public :: constitutive_matrix => t2d_constitutive_matrix Function | |
| procedure , public :: evaluate_shape_function => t2d_shape_function Function | |
| procedure , public :: external_force_vector => le_ext_force_vector Function | |
| procedure , public :: get_dimensionality => t2d_dimensionality Function | |
| procedure , public :: get_dof_per_node => t2d_dof_per_node Function | |
| procedure , public :: get_node => t2d_get_node Function | |
| procedure , public :: get_node_count => t2d_node_count Function | |
| procedure , public :: get_node_natural_coordinates => le_get_node_natural_coordinates Function | |
| procedure , public :: get_terminal_nodes => t2d_terminal_nodes Subroutine | |
| procedure , public :: jacobian => t2d_jacobian Function | |
| procedure , public :: length => le_length Function | |
| procedure , public :: mass_matrix => le_mass_matrix Function | |
| procedure , public :: rotation_matrix => t2d_rotation_matrix Function | |
| procedure , public :: shape_function_matrix => t2d_shape_matrix Function | |
| procedure , public :: stiffness_matrix => t2d_stiffness_matrix Function | |
| procedure , public :: strain => le_strain Function | |
| procedure , public :: strain_displacement_matrix => t2d_strain_matrix Function | |
| procedure , public :: stress => le_stress Function |
Defines a pin-jointed 3D bar with three translations per node. The local transverse axes are arbitrary; only the longitudinal direction influences axial strain and stiffness.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | area |
The element cross-sectional area. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node at natural coordinate s = -1. |
|||
| type(node), | public | :: | node_2 |
The node at natural coordinate s = 1. |
| private pure function t3d_init (mat, area, nd1, nd2) | Initializes a [[truss_element_3d]]. |
| procedure , public :: constitutive_matrix => t3d_constitutive_matrix Function | |
| procedure , public :: evaluate_shape_function => t3d_shape_function Function | |
| procedure , public :: external_force_vector => le_ext_force_vector Function | |
| procedure , public :: get_dimensionality => t3d_dimensionality Function | |
| procedure , public :: get_dof_per_node => t3d_dof_per_node Function | |
| procedure , public :: get_node => t3d_get_node Function | |
| procedure , public :: get_node_count => t3d_node_count Function | |
| procedure , public :: get_node_natural_coordinates => le_get_node_natural_coordinates Function | |
| procedure , public :: get_terminal_nodes => t3d_terminal_nodes Subroutine | |
| procedure , public :: jacobian => t3d_jacobian Function | |
| procedure , public :: length => le_length Function | |
| procedure , public :: mass_matrix => le_mass_matrix Function | |
| procedure , public :: rotation_matrix => t3d_rotation_matrix Function | |
| procedure , public :: shape_function_matrix => t3d_shape_matrix Function | |
| procedure , public :: stiffness_matrix => t3d_stiffness_matrix Function | |
| procedure , public :: strain => le_strain Function | |
| procedure , public :: strain_displacement_matrix => t3d_strain_matrix Function | |
| procedure , public :: stress => le_stress Function |